package ch.pizzapp.kurier.adapter;

import java.util.List;

import org.androidannotations.annotations.EBean;
import org.androidannotations.annotations.RootContext;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import ch.pizzapp.kurier.data.GenarateItem;
import ch.pizzapp.kurier.view.QuantityWithSizeItem;
import ch.pizzapp.kurier.view.QuantityWithSizeItem_;

@EBean
public class GridNormalPizzaWithSizeAdapater extends BaseAdapter {
	List<GenarateItem> genarateItemList;

	@RootContext
	Context context;

	Callback mCallback;

	public void setOnCallback(Callback mCallback) {
		this.mCallback = mCallback;
	}

	@Override
	public int getCount() {
		int size = 0;
		if (genarateItemList != null) {
			size = genarateItemList.size();
		}

		return size;

	}

	public List<GenarateItem> getGenarateItemList() {
		return genarateItemList;
	}

	public void setGenarateItemList(List<GenarateItem> genarateItemList) {
		this.genarateItemList = genarateItemList;
	}

	@Override
	public GenarateItem getItem(int position) {
		return genarateItemList.get(position);
	}

	@Override
	public long getItemId(int position) {
		return Long.valueOf(genarateItemList.get(position).getItemID());
	}

	public interface Callback {
		void addToCart(GenarateItem genarateItem);

	}

	@Override
	public View getView(final int position, View convertView, ViewGroup parent) {

		QuantityWithSizeItem quantityWithSizeItem;
		if (convertView == null) {
			quantityWithSizeItem = QuantityWithSizeItem_.build(context);
		} else {
			quantityWithSizeItem = (QuantityWithSizeItem) convertView;
		}

		quantityWithSizeItem.bind(getItem(position));

		quantityWithSizeItem.setOnCallBack(new QuantityWithSizeItem.Callback() {

			@Override
			public void addToCart() {
				// TODO Auto-generated method stub
				
				if (mCallback != null) {
					mCallback.addToCart(getItem(position));
				}
			}

			@Override
			public void onClicked(int quentity, int selectedSizeIndex,
					Double price) {
				// TODO Auto-generated method stub

				getItem(position).setQuentity(quentity);

				getItem(position).setCalculatedValue(price);
				
				getItem(position).setSelectedSizeIndex(selectedSizeIndex);

			}
		});

		return quantityWithSizeItem;

	}

}
